package br.com.jdcanado.gae.inforse.model;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;

import br.com.jdcanado.gae.inforse.controller.PMF;
import br.com.jdcanado.gae.inforse.model.ValorOrcamento.CustoFixo;

import com.google.appengine.api.datastore.Key;

public class OrcamentoDAO {
	public static void inserirOrcamento(Orcamento orcamento, Key clienteKey){
		PersistenceManager pm = PMF.get().getPersistenceManager();
		
		try{
			Cliente cliente = pm.getObjectById(Cliente.class, clienteKey);
			cliente.getOrcamentoSets().add(orcamento);
			pm.makePersistent(cliente);
			FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_INFO, "Solicitação realizada!", "message");
			FacesContext.getCurrentInstance().addMessage(null, fm);
		}catch(Exception e){
			FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "erroLogin");
			FacesContext.getCurrentInstance().addMessage(null, fm);
		}finally{
			pm.close();
		}
	}
	
	public static List<Orcamento> queryOrcamentosByUsuario(Usuario usuario){
		PersistenceManager pm = PMF.get().getPersistenceManager();
		List<Orcamento> listaResultado = new ArrayList();
		Query query = pm.newQuery(Orcamento.class);
		
		query.setFilter("usuarioEmissao == usuarioOrcamento");
		query.setOrdering("dataEmissao");
		query.declareParameters("String usuarioOrcamento");
				
		try{
			listaResultado = (List<Orcamento>) query.execute(usuario.getOperador());
			return listaResultado;
		}catch(Exception e){
			FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "erroLogin");
			FacesContext.getCurrentInstance().addMessage(null, fm);
			return null;
		}finally{
			query.closeAll();
		}
	}	
	
	public static Orcamento queryOrcamentosByKey(Key orcamentoKey){
		PersistenceManager pm = PMF.get().getPersistenceManager();
				
		try{
			Orcamento orcamento = pm.getObjectById(Orcamento.class, orcamentoKey);
			return orcamento;
		}catch(Exception e){
			FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "erroLogin");
			FacesContext.getCurrentInstance().addMessage(null, fm);
			return null;
		}finally{
			pm.close();
		}
	}
}
